Ext.onReady(function() {
	var psize = 18;
	var nodeid;
	var nodename;
	var deep;
	var store_process_domain;

	// *********************头部Toolbar**************************//
		var toolbar = new Ext.Toolbar( {
			id : 'toolbar',
			stateful : true,
			items : [
					'-',
					{
						id : 'add-p',
						text : '新增',
						handler : function() {
							var deep = Ext.ComponentMgr.get("get_tree_deep")
									.getValue();
							if (deep == "5") {
								Ext.Msg.alert("提示", "此关注点无下级,请重选节点！");
							} else
								show_add();
						}
					}, '-', {
						id : 'edit-btn',
						text : '编辑',
						handler : function() {
							show_edit();
						}
					}, '-', {
						id : 'del-btn',
						text : '删除',
						handler : function() {
							show_del();
						}
					}, {
						xtype : "hidden",
						id : 'get_btn'
					}, {
						xtype : "hidden",
						id : 'get_tree_deep'
					}, {
						xtype : "hidden",
						id : 'get_tree_id'
					}, {
						xtype : "hidden",
						id : 'get_tree_name'
					}, {
						xtype : "hidden",
						id : 'get_tree_fid'
					}, {
						xtype : "hidden",
						id : 'get_tree_fname'
					}, '-' ]
		});

		// ******************查询条件面板**********************//
		var bm = new Ext.form.TextField( {
			fieldLabel : "编码",
			anchor : '100%',
			emptyText : '请选择',
			id : 'Code'
		})

		var mc = new Ext.form.TextField( {
			fieldLabel : "名称",
			anchor : '100%',
			emptyText : '请选择',
			id : 'Name'
		})

		var panel_query = new Ext.FormPanel( {
			id : 'pl_query',
			layout : 'form',
			labelWidth : 80,
			width : '98%',
			height : '100%',
			bodyStyle : 'padding: 0 10px 0 10px',
			border : false,
			items : [ {
				title : '查询条件',
				layout : 'form',
				xtype : 'fieldset',
				bodyStyle : 'padding: 0 0 0 50px',
				collapsible : false,
				labelAlign : 'right',
				height : '100%',
				defaults : {
					width : '100%'
				},
				items : [ {
					layout : 'column',
					border : false,
					items : [ {
						columnWidth : .3,
						layout : 'form',
						labelWidth : 80,
						border : false,
						bodyStyle : 'padding:5px 5px 0',
						items : [ bm ]
					}, {
						columnWidth : .3,
						layout : 'form',
						labelWidth : 80,
						anchor : '80%',
						width : '80%',
						border : false,
						bodyStyle : 'padding:5px 5px 0',
						items : [ mc ]
					}, {
						columnWidth : .3,
						layout : 'form',
						labelWidth : 80,
						anchor : '100%',
						border : false,
						bodyStyle : 'padding:5px 0 5px 30px',
						items : [ {
							xtype : "button",
							id : 'query_tbtn',
							text : "查    询",
							width : 80,
							handler : function() {
								query_manage();
							}
						} ]
					} ]
				} ]
			} ]
		})

		// ****************左侧树*********************//

		var tree_root = new Ext.tree.AsyncTreeNode( {
			text : '全部流程',
			id : '0000'
		});

		var tree = new Ext.tree.TreePanel(
				{
					border : '0',
					height : '100%',
					anchor : '100% 100%',
					id : 'tree_mangae',
					useArrows : true,
					autoScroll : true,
					animate : true,
					enableDD : false,
					containerScroll : true,
					rootVisible : true,
					root : tree_root,
					autoScroll : true,
					listeners : {
						beforeload : function(node) {
					if(node.getDepth()==0){
				          var openUrl = basePath
				                + 'JarpListener?className=cn.com.jsepc.rep.process.GetTree&methodName=gettree&paramCount=0'
				                node.loader = new Ext.tree.TreeLoader({
				                    dataUrl : openUrl
				                });
				                }
				                else if(node.getDepth()==1){
				            var openUrl = basePath
				                + 'JarpListener?className=cn.com.jsepc.rep.process.GetTree&methodName=getProcess&paramCount=1&param_0='+node.id
				                node.loader = new Ext.tree.TreeLoader({
				                    dataUrl : openUrl
				                });
				            }
				            else if(node.getDepth()==2){
				            var openUrl = basePath
				                + 'JarpListener?className=cn.com.jsepc.rep.process.GetTree&methodName=getLifecycle&paramCount=1&param_0='+node.id
				                node.loader = new Ext.tree.TreeLoader({
				                    dataUrl : openUrl
				                });
				            }
				            else if(node.getDepth()==3){
				            var openUrl = basePath
				                + 'JarpListener?className=cn.com.jsepc.rep.process.GetTree&methodName=getList&paramCount=1&param_0='+node.id
				                node.loader = new Ext.tree.TreeLoader({
				                    dataUrl : openUrl
				                });
				            }
				            else if(node.getDepth()==4){
				            var openUrl = basePath
				                + 'JarpListener?className=cn.com.jsepc.rep.process.GetTree&methodName=getPoint&paramCount=1&param_0='+node.id
				                node.loader = new Ext.tree.TreeLoader({
				                    dataUrl : openUrl
				                });
				            }
						}
					}
				});
		
		var sm = new Ext.grid.CheckboxSelectionModel( {
			singleSelect : true,
			header : ''
		});

		var openUrl = basePath + 'JarpListener?className=cn.com.jsepc.rep.process.process_manage';
		openUrl += '&methodName=getGrid&paramCount=6';
		var jReader1 = new Ext.data.JsonReader( {
			root : 'data',
			totalProperty : 'totalCount',
			fields : [ {
				name : 'pID'
			}, {
				name : 'pcode'
			}, {
				name : 'pname'
			}, {
				name : 'pdesc'
			}, {
				name : 'plink'
			}, {
				name : 'pname_link'
			} ]
		});

		var cm = new Ext.grid.ColumnModel( [ sm, {
			header : '流程域编号',
			sortable : true,
			hidden : true,
			dataIndex : 'pID'
		}, {
			header : '流程域编码',
			sortable : true,
			dataIndex : 'pcode'
		}, {
			header : '流程域名称',
			sortable : true,
			dataIndex : 'pname'
		}, {
			header : '流程域描述',
			sortable : true,
			dataIndex : 'pdesc'
		} ]);

		store_process_domain = new Ext.data.Store( {
			proxy : new Ext.data.HttpProxy( {
				url : openUrl
			}),
			reader : jReader1,
			baseParams : {
				param_0 : 0,
				param_1 : psize,
				param_2 : "",
				param_3 : "",
				param_4 : "",
				param_5 : ""
			}
		});

		var grid_process_domain = new Ext.grid.GridPanel( {
			id : 'grid_process_domain',
			store : store_process_domain,
			title : '流程域信息',
			viewConfig : {
				forceFit : true
			},
			sm : sm,
			cm : cm,
			anchor:'100% -80',
			loadMask:true,		//数据加载时的遮罩功能 
			frame : true,
			columnLines : true,
			stateful : true,
			bbar : new Ext.PagingToolbar( {
				store : store_process_domain,
				paramNames : {
					start : 'param_0',
					limit : 'param_1'
				},
				emptyMsg : '没有数据需要显示',
				displayInfo : true,
				pageSize : psize,
				listeners : {
					beforechange : function(bar, params) {
						bar.store.setBaseParam("param_2", Ext.ComponentMgr.get(
								"Code").getValue());
						bar.store.setBaseParam("param_3", Ext.ComponentMgr.get(
								"Name").getValue());
						bar.store.setBaseParam("param_4", Ext.ComponentMgr.get(
								"get_tree_deep").getValue());
						bar.store.setBaseParam("param_5", Ext.ComponentMgr.get(
								"get_tree_id").getValue());
					}
				}
			})
		});
		
		// **********************流程管理整体框架*********************//
		var viewport = new Ext.Viewport( {
			layout : 'border',
			items : [ {
				region : 'center',
				tbar : toolbar,
				layout : 'border',
				items : [ {
					region : 'west',
					tools : [ {
						id : 'refresh',
						handler : function() {
							if (tree_root != null) {
								tree_root.reload();
							}
						}
					} ],
				    collapsible : true,
				    split:true,
					title : '流程',
					layout:'anchor',
					width : 200,
					autoScroll : true,
					items : [ tree ]
				}, new Ext.Panel( {
					region : 'center',
					title : '流程管理',
					frame : true,
					layout:"anchor",
					items : [ panel_query,grid_process_domain ]
				}) ]
			} ]
		});
		store_process_domain.load();

		// *******************************查询功能**********************************//
		
		tree_root.on('click', function() {
			bm.setDisabled(false);
			mc.setDisabled(false);
			grid_process_domain.setTitle("流程域信息");
			cm = new Ext.grid.ColumnModel( [ sm, {
				header : '流程域编号',
				sortable : true,
				hidden : true,
				dataIndex : 'pID'
			}, {
				header : '流程域编码',
				sortable : true,
				dataIndex : 'pcode'
			}, {
				header : '流程域名称',
				sortable : true,
				dataIndex : 'pname'
			}, {
				header : '流程域描述',
				sortable : true,
				dataIndex : 'pdesc'
			} ]);
			store_process_domain.proxy = new Ext.data.HttpProxy( {
				url : openUrl
			});
			store_process_domain.baseParams = {
				param_0 : 0,
				param_1 : psize,
				param_2 : Ext.ComponentMgr.get("Code").getValue(),
				param_3 : Ext.ComponentMgr.get("Name").getValue(),
				param_4 : "",
				param_5 : ""
			}
			grid_process_domain.reconfigure(store_process_domain, cm);
			store_process_domain.load();
		})

		tree.on('click', function(node) {
			deep = node.getDepth();
			nodeid = node.id;
			nodename = node.text;
			// alert("deep:"+deep+"; nodeid:"+nodeid+"; nodename:"+nodename);
				Ext.ComponentMgr.get("get_tree_deep").setValue(deep);
				Ext.ComponentMgr.get("get_tree_id").setValue(nodeid);
				Ext.ComponentMgr.get("get_tree_name").setValue(nodename);
				if (deep == "5") {
					// 父类节点信息
				var pNode = node.parentNode;
				var fid = pNode.id;
				var ftext = pNode.text;
				Ext.ComponentMgr.get("get_tree_fid").setValue(fid);
				Ext.ComponentMgr.get("get_tree_fname").setValue(ftext);
				bm.setDisabled(true);
				mc.setDisabled(true);
			}
		 // if(deep == ""||deep == "0" ) {
		 // 当为0时已经出发root的click事件
		 // }
			if (deep == "1") {
				bm.setDisabled(false);
				mc.setDisabled(false);
				grid_process_domain.setTitle("流程信息");

				cm = new Ext.grid.ColumnModel( [ sm, {
					header : '流程编号',
					sortable : true,
					hidden : true,
					dataIndex : 'pID'
				}, {
					header : '流程编码',
					sortable : true,
					dataIndex : 'pcode'
				}, {
					header : '流程名称',
					sortable : true,
					dataIndex : 'pname'
				}, {
					header : '流程描述',
					sortable : true,
					dataIndex : 'pdesc'
				}, {
					header : '所属流程域',
					sortable : true,
					hidden : true,
					dataIndex : 'plink'
				}, {
					header : '所属流程域',
					sortable : true,
					dataIndex : 'pname_link'
				} ]);

				store_process_domain.baseParams = {
					param_0 : 0,
					param_1 : psize,
					param_2 : Ext.ComponentMgr.get("Code").getValue(),
					param_3 : Ext.ComponentMgr.get("Name").getValue(),
					param_4 : Ext.ComponentMgr.get("get_tree_deep").getValue(),
					param_5 : Ext.ComponentMgr.get("get_tree_id").getValue()
				}
				grid_process_domain.reconfigure(store_process_domain, cm);
				store_process_domain.load();
			}
			if (deep == "2") {
				bm.setDisabled(false);
				mc.setDisabled(false);
				grid_process_domain.setTitle("流程周期信息");

				var cm = new Ext.grid.ColumnModel( [ sm, {
					header : '流程周期编号',
					sortable : true,
					hidden : true,
					dataIndex : 'pID'
				}, {
					header : '流程周期编码',
					sortable : true,
					dataIndex : 'pcode'
				}, {
					header : '流程周期名称',
					sortable : true,
					// width : 200,
					dataIndex : 'pname'
				}, {
					header : '流程周期描述',
					sortable : true,
					dataIndex : 'pdesc'
				}, {
					header : '所属流程',
					sortable : true,
					hidden : true,
					dataIndex : 'plink'
				}, {
					header : '所属流程',
					sortable : true,
					dataIndex : 'pname_link'
				} ]);

				store_process_domain.baseParams = {
					param_0 : 0,
					param_1 : psize,
					param_2 : Ext.ComponentMgr.get("Code").getValue(),
					param_3 : Ext.ComponentMgr.get("Name").getValue(),
					param_4 : Ext.ComponentMgr.get("get_tree_deep").getValue(),
					param_5 : Ext.ComponentMgr.get("get_tree_id").getValue()
				}
				grid_process_domain.reconfigure(store_process_domain, cm);
				store_process_domain.load();
			}
			if (deep == "3") {
				bm.setDisabled(false);
				mc.setDisabled(false);
				grid_process_domain.setTitle("流程环节信息");

				cm = new Ext.grid.ColumnModel( [ sm, {
					header : '环节编号',
					sortable : true,
					hidden : true,
					dataIndex : 'pID'
				}, {
					header : '环节编码',
					sortable : true,
					dataIndex : 'pcode'
				}, {
					header : '环节名称',
					sortable : true,
					// width : 200,
					dataIndex : 'pname'
				}, {
					header : '环节描述',
					sortable : true,
					dataIndex : 'pdesc'
				}, {
					header : '所属流程周期',
					sortable : true,
					hidden : true,
					dataIndex : 'plink'
				}, {
					header : '所属流程周期',
					sortable : true,
					dataIndex : 'pname_link'
				} ]);

				store_process_domain.baseParams = {
					param_0 : 0,
					param_1 : psize,
					param_2 : Ext.ComponentMgr.get("Code").getValue(),
					param_3 : Ext.ComponentMgr.get("Name").getValue(),
					param_4 : Ext.ComponentMgr.get("get_tree_deep").getValue(),
					param_5 : Ext.ComponentMgr.get("get_tree_id").getValue()
				}
				grid_process_domain.reconfigure(store_process_domain, cm);
				store_process_domain.load();
			}
			if (deep == "4") {
				bm.setDisabled(false);
				mc.setDisabled(false);
				grid_process_domain.setTitle("流程关注点信息");

				cm = new Ext.grid.ColumnModel( [ sm, {
					header : '关注点编号',
					sortable : true,
					hidden : true,
					dataIndex : 'pID'
				}, {
					header : '关注点编码',
					sortable : true,
					dataIndex : 'pcode'
				}, {
					header : '关注点名称',
					sortable : true,
					// width : 200,
					dataIndex : 'pname'
				}, {
					header : '关注点描述',
					sortable : true,
					dataIndex : 'pdesc'
				}, {
					header : '所属环节',
					sortable : true,
					hidden : true,
					dataIndex : 'plink'
				}, {
					header : '所属环节',
					sortable : true,
					dataIndex : 'pname_link'
				} ]);

				store_process_domain.baseParams = {
					param_0 : 0,
					param_1 : psize,
					param_2 : Ext.ComponentMgr.get("Code").getValue(),
					param_3 : Ext.ComponentMgr.get("Name").getValue(),
					param_4 : Ext.ComponentMgr.get("get_tree_deep").getValue(),
					param_5 : Ext.ComponentMgr.get("get_tree_id").getValue()
				}
				grid_process_domain.reconfigure(store_process_domain, cm);
				store_process_domain.load();
			}
			if (deep == "5") {
				grid_process_domain.setTitle("流程关注点信息");

				var cm = new Ext.grid.ColumnModel( [ sm, {
					header : '关注点编号',
					sortable : true,
					hidden : true,
					dataIndex : 'pID'
				}, {
					header : '关注点编码',
					sortable : true,
					dataIndex : 'pcode'
				}, {
					header : '关注点名称',
					sortable : true,
					dataIndex : 'pname'
				}, {
					header : '关注点描述',
					sortable : true,
					dataIndex : 'pdesc'
				}, {
					header : '所属环节',
					sortable : true,
					hidden : true,
					dataIndex : 'plink'
				}, {
					header : '所属环节',
					sortable : true,
					dataIndex : 'pname_link'
				} ]);

				store_process_domain.baseParams = {
					param_0 : 0,
					param_1 : psize,
					param_2 : Ext.ComponentMgr.get("Code").getValue(),
					param_3 : Ext.ComponentMgr.get("Name").getValue(),
					param_4 : Ext.ComponentMgr.get("get_tree_deep").getValue(),
					param_5 : Ext.ComponentMgr.get("get_tree_id").getValue()
				}
				grid_process_domain.reconfigure(store_process_domain, cm);
				store_process_domain.load();
			}
		})

		// 根据深度分情况处理
		function query_manage() {
			store_process_domain.load( {
				params : {
					param_2 : Ext.ComponentMgr.get("Code").getValue(),
					param_3 : Ext.ComponentMgr.get("Name").getValue(),
					param_4 : Ext.ComponentMgr.get("get_tree_deep").getValue(),
					param_5 : Ext.ComponentMgr.get("get_tree_id").getValue()
				}
			});
		}

		function setempty() {
			Ext.ComponentMgr.get("Code").setValue("");
			Ext.ComponentMgr.get("Name").setValue("");
			Ext.ComponentMgr.get("get_tree_deep").setValue("");
			Ext.ComponentMgr.get("get_tree_id").setValue("");
		}

//      监听窗体的大小
//		Ext.EventManager.onWindowResize(function() {
//			var grid = Ext.ComponentMgr.get("grid_process_domain");
//			grid.setWidth(document.body.clientWidth - 210);
//			grid.setHeight(document.body.clientHeight - 215);
//		});
	});